

SET LINE 180
SET SERVEROUTPUT ON;


--1ERA PARTE: SECUENCIA NIVELES
CREATE SEQUENCE AUTO_IDNIVEL START WITH 10000000 INCREMENT BY 1;

--PROCEDIMIENTO ALTA DE NIVEL
CREATE OR REPLACE PROCEDURE ALTA_NIVEL(NIVEL$ IN VARCHAR2)
AS
	NIVEL_ACTUAL$ 	VARCHAR2(45);
BEGIN
	SELECT NIVEL INTO NIVEL_ACTUAL$ FROM NIVEL 
	WHERE NIVEL=NIVEL$;
	IF(NIVEL_ACTUAL$ IS NOT NULL) THEN
		DBMS_OUTPUT.PUT_LINE('EL SERVICIO YA EXISTE, NO PUEDE SER DUPLICADO');
	END IF;
	EXCEPTION
	WHEN NO_DATA_FOUND THEN
		INSERT INTO NIVEL(IDNIVEL,NIVEL) VALUES(AUTO_IDNIVEL.NEXTVAL,NIVEL$);
		DBMS_OUTPUT.PUT_LINE('SE HA AGREGADO EL NIVEL:'||NIVEL$);
		COMMIT;
END ALTA_NIVEL;
/

--PROCEDIMIENTO PARA BAJA DE NIVEL
CREATE OR REPLACE PROCEDURE BAJA_NIVEL(IDNIVEL$ IN NUMBER)
AS
BEGIN
	DELETE FROM NIVEL WHERE IDNIVEL=IDNIVEL$;
	IF SQL%NOTFOUND THEN 
		DBMS_OUTPUT.PUT_LINE('NO SE ELIMINO EL NIVEL');
	ELSE
		DBMS_OUTPUT.PUT_LINE('SE ELIMINO EL NIVEL');
	COMMIT;
	END IF;
END BAJA_NIVEL;
/

--PROCEDIMIENTO PARA ACTUALIZAR NIVEL
CREATE OR REPLACE PROCEDURE ACTUALIZA_NIVEL(IDNIVEL$ IN NUMBER,NIVEL$ IN VARCHAR2)
AS
BEGIN
	UPDATE NIVEL SET NIVEL=NIVEL$ WHERE IDNIVEL=IDNIVEL$;
	IF SQL%NOTFOUND THEN
		DBMS_OUTPUT.PUT_LINE('NO EXISTE EL NIVEL A ACTUALIZAR');
	ELSE
		DBMS_OUTPUT.PUT_LINE('SE ACTUALIZO EL NIVEL');
		COMMIT;
	END IF;
END ACTUALIZA_NIVEL;
/

